package cn.hallele.leinsteining.mc.infrastructure.util.date;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;

/**
 * 时间工具
 *
 * @author anle5
 * @since 2024/7/25 23:40
 */
public class DateUtils extends DateFormatUtils {
    /**
     * 与当前时间做比较
     *
     * @param target 要判断的时间
     * @return true: target早于当前时间  false: target晚于当前时间
     */
    public static boolean isExpired(LocalDateTime target) {
        return LocalDateTime.now().isAfter(target);
    }

    /**
     * 与 eqTime 时间做比较
     *
     * @param target 要判断的时间
     * @param eqTime 对比的对象
     * @return true: target早于eqTime  false: target晚于eqTime
     */
    public static boolean isExpired(LocalDateTime target, LocalDateTime eqTime) {
        return eqTime.isAfter(target);
    }

    /**
     * 比较时间是否在 begin 和 end 之间
     *
     * @param begin   起始时间
     * @param youWant 要比较的时间
     * @param end     结束时间
     * @return true:在 begin 和 end 之间  , false 反之,传入null参数也会返回false
     */
    public static boolean isBetween(LocalDateTime begin, LocalDateTime youWant, LocalDateTime end) {
        if (begin == null || youWant == null || end == null) {
            return false;
        }

        if (begin.equals(youWant) || end.equals(youWant)) {
            return true;
        }
        return begin.isBefore(youWant) && youWant.isBefore(end);
    }

    /**
     * 获取当前时间
     *
     * @return 当前时间
     */
    public static LocalDateTime now() {
        return LocalDateTime.now();
    }
}
